
// node中允许用户 自定义事件  触发自定义  删除自定义事件

// var events = require("events");
// console.log(events);

// var EventEmitter = events.EventEmitter;

var { EventEmitter } = require("events");

var e = new EventEmitter();  //创建一个事件触发器 (可以绑定 删除 触发自定义事件)
// console.log(e);

// 绑定事件
// e.on(type, callback)
// e.addListener(type, callback)  等同于on
// e.once(type, callback)      等同于on(只能触发一次)
// e.prependListener(type, callback)   预追加事件


let a, b, c, d, f;
// console.log(Number("100"));
// console.log(a = 1); // a = 1  console.log(a)

e.on("hello", a = function () {
    console.log("这是自定义事件hello", 1);
})
e.addListener("hello", b = function () {
    console.log("这是自定义事件hello", 2);
})
e.once("hello", c = function () {
    console.log("这是自定义事件hello", 3);
})
e.prependListener("hello", d = function () {
    console.log("这是自定义事件hello", 4);
})
e.prependListener("hello", f = function (arg) {
    console.log("这是自定义事件hello", 5, arg);
})

e.on("abc", a = function () {
    console.log("这是自定义事件hello", 1);
})

// 触发事件
// e.emit(type,data)
// type 触发事件类型
// data 携带数据

// e.emit("hello");
// console.log("----------");
// e.emit("hello");

// e.emit("hello", "world");


// 删除事件
// e.off(type, callback)
// e.removeListener(type, callback)
// e.removeAllListeners(eventName) (注意.removeAllListeners()不要忘了加s) 删除名字为eventName的所有事件, eventName代表 需要被删除所有监听函数的事件名 该参数为可选值  如果不传,则会删除events对象下所有的事件的所有监听函数

// e.off("hello", a);
// e.off("hello", b);
// e.off("hello", c);
// e.off("hello", d);
// e.off("hello", f);

// e.removeAllListeners("hello")

// e.emit("hello", "world");


// e.listenerCount(eventName) 查看绑定事件的个数 eventName为事件名
// console.log(e.listenerCount("hello"));


// e.eventNames()  返回一个列出触发器已注册监听器的事件的数组。 数组中的值为字符串或符号
// console.log(e.eventNames());

// e.getMaxListeners()  返回 EventEmitter 当前的最大监听器限制值 (最多能绑定多少个事件)
// console.log(e.getMaxListeners());

// 默认情况下,一个监听事件名 最多可绑定十个事件函数,如需改变则需要借用  .setMaxListener方法
// e.setMaxListeners(num)  设置单个事件监听绑定函数的数量  默认为10 num为需要修改的上限值,最好一开始就设置.

// e.setMaxListeners(100);
